package com.gooluke.controller;

import cn.dev33.satoken.stp.StpUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author gooluke
 * datetime 2025/4/30 10:42
 */
@RestController
@RequestMapping("/permission")
public class PermissionController {

    @RequestMapping("/info")
    public void info() {
        // 获取：当前账号所拥有的权限集合
        List<String> permissionList = StpUtil.getPermissionList();
        System.out.println("permissionList = " + permissionList);

        // 判断：当前账号是否含有指定权限, 返回 true 或 false
        boolean hasPermission = StpUtil.hasPermission("user.add");
        System.out.println("hasPermission user.add = " + hasPermission);

        // 校验：当前账号是否含有指定权限, 如果验证未通过，则抛出异常: NotPermissionException
        StpUtil.checkPermission("user.add");

        // 校验：当前账号是否含有指定权限 [指定多个，必须全部验证通过]
        StpUtil.checkPermissionAnd("user.add", "user.delete", "user.get");

        // 校验：当前账号是否含有指定权限 [指定多个，只要其一验证通过即可]
        StpUtil.checkPermissionOr("user.add", "user.delete", "user.get");

        // 获取：当前账号所拥有的角色集合
        List<String> roleList = StpUtil.getRoleList();
        System.out.println("roleList = " + roleList);

        // 判断：当前账号是否拥有指定角色, 返回 true 或 false
        boolean hasRole = StpUtil.hasRole("super-admin");
        System.out.println("hasRole super-admin = " + hasRole);

        // 校验：当前账号是否含有指定角色标识, 如果验证未通过，则抛出异常: NotRoleException
        StpUtil.checkRole("super-admin");

        // 校验：当前账号是否含有指定角色标识 [指定多个，必须全部验证通过]
        StpUtil.checkRoleAnd("super-admin", "shop-admin");

        // 校验：当前账号是否含有指定角色标识 [指定多个，只要其一验证通过即可]
        StpUtil.checkRoleOr("super-admin", "shop-admin");

    }

}
